]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
remoteMenu: Support icons in app-menu
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 22 Jan 2016 14:11:05 +0000 (15:11 +0100)
committerFlorian Müllner <florian.muellner@gmail.com>
Sat, 14 Apr 2018 09:02:20 +0000 (09:02 +0000)
The HIG discourages the use of icons in menus except for "noun" items
(files, bookmarks, ...). While those should be rarely used in the
application menu, it still makes sense to support them in the few
cases where they are used.

https://bugzilla.gnome.org/show_bug.cgi?id=760985

js/ui/remoteMenu.js

index 848ab753763df7f0fb4e0552defd63bd407d4908..78a2e29346f69a707119e42dee2f99e486694e3e 100644 (file)
@@ -119,6 +119,9 @@ var RemoteMenuItemMapper = new Lang.Class({
         this._trackerItem = trackerItem;
 
         this.menuItem = new PopupMenu.PopupBaseMenuItem();
+        this._icon = new St.Icon({ style_class: 'popup-menu-icon' });
+        this.menuItem.actor.add_child(this._icon);
+
         this._label = new St.Label();
         this.menuItem.actor.add_child(this._label);
         this.menuItem.actor.label_actor = this._label;
@@ -129,11 +132,13 @@ var RemoteMenuItemMapper = new Lang.Class({
 
         this._trackerItem.bind_property('visible', this.menuItem.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
 
+        this._trackerItem.connect('notify::icon', this._updateIcon.bind(this));
         this._trackerItem.connect('notify::label', this._updateLabel.bind(this));
         this._trackerItem.connect('notify::sensitive', this._updateSensitivity.bind(this));
         this._trackerItem.connect('notify::role', this._updateRole.bind(this));
         this._trackerItem.connect('notify::toggled', this._updateDecoration.bind(this));
 
+        this._updateIcon();
         this._updateLabel();
         this._updateSensitivity();
         this._updateRole();
@@ -143,6 +148,11 @@ var RemoteMenuItemMapper = new Lang.Class({
         });
     },
 
+    _updateIcon() {
+        this._icon.gicon = this._trackerItem.icon;
+        this._icon.visible = (this._icon.gicon != null);
+    },
+
     _updateLabel() {
         this._label.text = stripMnemonics(this._trackerItem.label);
     },